package com.imooc.service;

import com.imooc.dataobject.ProductInfo;
import com.imooc.dto.CartDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 功能描述: <br>
 * (商品模块service)
 *
 * @Author:Mr. xyb
 * @Date: 2018/5/18 17:15
 * @since: 1.8.0
 * @version: 1.0.0
 */
public interface ProductService {

    /**
     * 查询商品信息
     *
     * @param productId
     * @return
     */
    ProductInfo findOne(String productId);

    /**
     * 查询上架的商品
     *
     * @return
     */
    List<ProductInfo> findUpAll();

    /**
     * 分页查询所有商品列表
     *
     * @param pageable
     * @return
     */
    Page<ProductInfo> findAll(Pageable pageable);

    /**
     * 保存商品信息
     *
     * @param info
     * @return
     */
    ProductInfo save(ProductInfo info);

    /**
     * 加库存
     *
     * @param cartDtos 购物车传输对象
     */
    void increaseStock(List<CartDto> cartDtos);

    /**
     * 减库存
     *
     * @param cartDtos 购物车传输对象
     */
    void decreaseStock(List<CartDto> cartDtos);

    /**
     * 上架
     *
     * @param productId
     * @return
     */
    ProductInfo onSale(String productId);

    /**
     * 下架
     *
     * @param productId
     * @return
     */
    ProductInfo offSale(String productId);

}
